import pandas as pd
import numpy as np

#创建销售数据
np.random.seed(42)
dates = pd.date_range('2023-1-1', periods=100, freq='D')
print("日期:")
print(len(dates))
products = ['产品A', '产品B', '产品C','产品D']
regions = ['区域1', '区域2', '区域3', '区域4']

#随机生成销售数据
data = []
for date in dates:
    for _ in range(5):
        data.append({
            '日期': date,
            '产品': np.random.choice(products),
            '区域': np.random.choice(regions),
            '销量': np.random.randint(1, 100),
            '单价': np.random.randint(10, 100),
        })


df = pd.DataFrame(data)
df['销售额'] = df['销量'] * df['单价']
print("销售数据样本:")
print(df.head(10))
print(df.shape)

#基本统计信息
print("\n基本统计信息:")
print(f"总记录数:{len(df)}")
print(f"销售期间:{df['日期'].min()} 到 {df['日期'].max()}")
print(f"总销售额:{df['销售额'].sum():.2f}")
print(f"平均销售额:{df['销售额'].mean():.2f}")

# 按产品分析
print("\n产品销售分析:")
product_sales = df.groupby('产品').agg({
    '销量': 'sum',
    '销售额': 'sum'
}).sort_values('销售额',ascending=False)

print(product_sales)

# 按区域分析
print("\n区域销售分析:")
region_sales = df.groupby('区域').agg({
    '销量': 'sum',
    '销售额': 'sum'
}).sort_values('销售额',ascending=False)
print(region_sales)

# 按实践趋势分析
print("\n实践趋势分析:")
df['月份'] = df['日期'].dt.to_period('M')
monthly_sales = df.groupby('月份')['销售额'].sum ()
print("月度销售额:")
print(monthly_sales)

# 最佳销售日
daily_sales = df.groupby('日期')['销售额'].sum()
best_day = daily_sales.idxmax()
best_day_sales = daily_sales.max()
print(f"最佳销售日:{best_day}，销售额:{best_day_sales:.2f}")

# 销售额分布
print("\n销售额分布:")
print(f"最高单笔销售额:{df['销售额'].max():.2f}")
print(f"最低单笔销售额:{df['销售额'].min():.2f}")
print(f"销售额标准差: {df['销售额'].std():.2f}")

# 查找异常值(超过平均+2个标准差)
mean_sales= df['销售额'].mean()
std_sales = df['销售额'].std()
threshold = mean_sales + 2 * std_sales
outliers = df[df['销售额'] > threshold]
print(f"异常销售额（超过{threshold:.2f}）:")
print(outliers[['日期', '产品', '区域', '销售额']])

